perm filename ANAREL.MAC[GPR,LCS] blob
sn#138797 filedate 1975-01-06 generic text, type T, neo UTF8
TITLE ANAREL Gordon Paul Ross Raffa Edwards
SUBTTL DEFINATIONS
F==0
T1==1
T2==2
T3==3
T4==4
T5==5
T6==6
RELWRD==6
VARPTR==7
RCNT==13
CNT==14
WRD==15
N==16
P==17
FILE.==10
EXT.==11
DEV.==12
PPN.==13
AROW.F==1
DONE.F==2
CHRTYP==4
IDEV==0
ODEV==1
EOF==20000
DV.DIR==4
AC.F==400000
IND.F==20
INX.F==17
PRT.F==777777
LEN==50
RELCNT==22
OPDEF .GTINS [LDB [POINT 9,WRD,8]]
OPDEF .GTACM [LDB [POINT 4,WRD,12]]
OPDEF .GTINX [LDB [POINT 4,WRD,17]]
OPDEF .GTSYM [LDB [POINT 32,WRD,35]]
OPDEF .GTPRO [LDB [POINT 12,WRD,17]]
DEFINE MAKNAM(A)<
IRP A,<
SIXBIT/A/
>>
DEFINE MAKPRT(A)<
XWD -1,A
>
USRDEF==NONIMP
REQLIB==LDREQ
IFNDEF FINAL,<FINAL==1>
VGROUP==3
VMAJOR==1
VMINOR==1
VEDIT==5
LOC 137
BYTE (3) VGROUP (9) VMAJOR (6) VMINOR (18) VEDIT
LOC 124
EXP RENTER
RELOC
SUBTTL DATA
XWD 0,NONIMP
CMD: XWD USRDEF,CODE
XWD SYMBOL,HISEG
XWD ENTR,ENDBLK
XWD NAME,STARD
XWD INTERN,NONIMP
XWD LINK,NONIMP
XWD NONIMP,NONIMP
XWD LDREQ,REQLIB
XWD COMMON,SPARSE
CMDCNT==.-CMD-1
XWD 0,NONMES
CMDMES: XWD USRMES,CODMES
XWD SYMMES,HIGMES
XWD ENTMES,FINMES
XWD NAMMES,STAMES
XWD INTMES,NONMES
XWD LNKMES,NONMES
XWD NONMES,NONMES
XWD LDRMES,REQMES
XWD COMMES,SPAMES
PROTYP: XWD UNKPRO,F40PRO
XWD COBPRO,ALGPRO
XWD NELPRO,PR1PRO
XWD BLIPRO,SAIPRO
XWD F10PRO,MACPRO
XWD FAIPRO,0
SPCCHR: XWD 0,"]"
BRKTAB: XWD EXT,"."
XWD DEVICE,":"
XWD PPN,"["
XWD ARROW,"←"
XWD ARROW,"="
XWD BADCHR,","
XWD GETFL2,40
XWD GETFL2,11
LINTAB: XWD ARROW+2,0
BRKCNT==.-BRKTAB-1
LINCNT==.-LINTAB-1
SPCCNT==.-SPCCHR-1
OPBLKI: 10
Z
XWD 0,IBUF
OPBLKO: BLOCK 2
XWD OBUF,0
IBUF: BLOCK 3
OBUF: BLOCK 3
PDL: BLOCK LEN
ERRTAB: XWD NOFILE,UFDPPN
XWD PROTEC,FILMOD
XWD EXIST,ILLUUO
XWD DATAER,NOSAVE
XWD NOCORE,DEVUAV
XWD NOTDEV,NO2REG
XWD NOROOM,WLERR
XWD NOMCOR,PARALC
XWD BLKNOF,SUPDIR
XWD DELDIR,NOSFD
XWD SLEMPT,SFDLVL
XWD UFDEFT,LOCSEG
IFN FINAL,<
XLIST
>
TYMES: ASCIZ/TYPE /
TYMES1: ASCIZ/TITLE: /
TYMES2: ASCIZ/BEGINNING ADDRESS: /
TYMES3: ASCIZ/STARTING LOCATION: /
TYMES4: ASCIZ/ENTRY: /
TYMES5: ASCIZ/HIGSEG ORGIN: /
TYMES6: ASCIZ/HISEG PSEUDO-OP/
TYMES7: ASCIZ/TWOSEG PSEUDO-OP/
TYMES8: ASCIZ/LOW SEGMENT ORGIN: /
TYMES9: ASCIZ/LOW SEGMENT BREAK: /
TYMS10: ASCIZ/LINK: /
TYMS11: ASCIZ/ADDRESS: /
RELMES: ASCIZ/[ N ]/
ASCIZ/[ R ]/
ASCIZ/[ L ]/
ASCIZ/[ B ]/
FILMES: ASCIZ/FILE NAME: /
PPNMES: ASCIZ/LOCATION: /
DEVMES: ASCIZ/DEVICE: /
NONMES: ASCIZ/ (BLOCK TYPE NOT IMPLEMENTED)/
USRMES: ASCIZ/ (USER DEFINED BLOCK)/
CODMES: ASCIZ/ (CODE AND DATA)/
SYMMES: ASCIZ/ (SYMBOL TABLE)/
HIGMES: ASCIZ/ (HISEG)/
ENTMES: ASCIZ/ (ENTRY ADDRESS(S))/
NAMMES: ASCIZ/ (PROGRAM NAME)/
FINMES: ASCIZ/ (END BLOCK)/
STAMES: ASCIZ/ (STARTING ADDRESS)/
INTMES: ASCIZ/ (INTERNAL REQUEST)/
LNKMES: ASCIZ/ (LINK)/
LDRMES: ASCIZ/ (REQUEST LOAD)/
REQMES: ASCIZ/ (REQUEST LIBRARY)/
COMMES: ASCIZ/ (COMMON BLOCK)/
SPAMES: ASCIZ/ (SPARSE DATA)/
UNKPRO: ASCIZ/UNKNOWN PROGRAM SOURCE/
F40PRO: ASCIZ/FORTRAN-40 PROGRAM/
COBPRO: ASCIZ/COBOL PROGRAM/
ALGPRO: ASCIZ/ALGOL-60 PROGRAM/
NELPRO: ASCIZ/NELIAC PROGRAM/
PR1PRO: ASCIZ .PL/1 PROGRAM .
BLIPRO: ASCIZ/BLISS-10 PROGRAM/
SAIPRO: ASCIZ/SAIL PROGRAM/
F10PRO: ASCIZ/FORTRAN-10 PROGRAM/
MACPRO: ASCIZ/MACRO PROGRAM/
FAIPRO: ASCIZ/FAIL PROGRAM/
NOFILE: ASCIZ/(0) FILE NOT FOUND
/
UFDPPN: ASCIZ/(1) NO UFD FOR GIVEN PPN
/
PROTEC: ASCIZ/(2) PROTECTION FAILURE
/
FILMOD: ASCIZ/(3) FILE BEING MODIFIED
/
EXIST: ASCIZ/(4) ALREADY EXISTING FILE NAME
/
ILLUUO: ASCIZ/(5) ILLEGAL SEQUENCE OF UUO'S
/
DATAER: ASCIZ/(6) RIB OR UFD ERROR
/
NOSAVE: ASCIZ/(7) NOT A SAVED FILE
/
NOCORE: ASCIZ/(10) NOT ENOUGH CORE
/
DEVUAV: ASCIZ/(11) DEVICE NOT AVAILABLE
/
NOTDEV: ASCIZ/(12) NO SUCH DEVICE
/
NO2REG: ASCIZ/(13) NO TWO REGISTER RELOCATION
/
NOROOM: ASCIZ/(14) NO ROOM OR QUOTA EXCEEDED
/
WLERR: ASCIZ/(15) DSK WRITE LOCKED
/
NOMCOR: ASCIZ/(16) MONITOR HAS NO FREE TABLE SPACE
/
PARALC: ASCIZ/(17) PARTIAL DSK SPACE ALLOCATION
/
BLKNOF: ASCIZ/(20) BLOCK NOT FREE
/
SUPDIR: ASCIZ/(21) CANNOT SUPERSEDE EXISTING DIRECTORY
/
DELDIR: ASCIZ/(22) CANNOT DELETE NON-EMPTY UFD
/
NOSFD: ASCIZ/(23) SFD NOT FOUND
/
SLEMPT: ASCIZ/(24) SEARCH LIST EMPTY
/
SFDLVL: ASCIZ/(25) MAXIMUM SFD NESTING LEVEL EXCEEDED
/
UFDEFT: ASCIZ/(26) CANNOT FIND WRITE-ENABLED DSK
/
LOCSEG: ASCIZ/(27) HISEG NOT DORMANT
/
IFE FINAL,<
SUBTTL INSTRUCTION AND CALLI MNEMONICS
>
INST: MAKNAM<CALL,INIT,←←←,←←←,←←←,←←←,←←←,CALLI,OPEN>
MAKPRT<4>
MAKNAM<←←←,←←←,←←←,RENAME,IN,OUT,SETSTS,STATO,STATUS>
MAKNAM<STATZ,INBUF,OUTBUF,INPUT,OUTPUT,CLOSE,RELEAS,MTAPE,UGETF,USETI>
MAKNAM<USETO,LOOKUP,ENTER,UJEN,←←←,←←←,←←←,←←←,←←←,←←←>
MAKNAM<←←←,DFAD,DFSB,DFMP,DFDV,←←←,←←←,←←←,←←←,DMOVE>
MAKNAM<DMOVN,FIX,←←←,DMOVEM,DMOVNM,FIXR,FLTR,UFA,DFN>
MAKNAM<FSC,IBP,ILDB,LDB,IDPB,DPB,FAD,FADL,FADM,FADB>
MAKNAM<FADR,FADRI,FADRM,FADRB,FSB,FSBL,FSBM,FSBB,FSBR,FSBRI>
MAKNAM<FSBRM,FSBRB,FMP,FMPL,FMPM,FMPB,FMPR,FMPRI,FMPRM,FMPRB>
MAKNAM<FDV,FDVL,FDVM,FDVB,FDVR,FDVRI,FDVRM,FDVRB,MOVE,MOVEI>
MAKNAM<MOVEM,MOVES,MOVS,MOVSI,MOVSM,MOVSS,MOVN,MOVNI,MOVNM,MOVNS>
MAKNAM<MOVM,MOVMI,MOVMM,MOVMS,IMUL,IMULI,IMULM,IMULB,MUL,MULI>
MAKNAM<MULM,MULB,IDIV,IDIVI,IDIVM,IDIVB,DIV,DIVI,DIVM>
MAKNAM<DIVB,ASH,ROT,LSH,JFFO,ASHC,ROTC,LSHC,←←←,EXCH>
MAKNAM<BLT,AOBJP,AOBJN>
MAKPRT<1>
MAKPRT<2>
MAKNAM<XCT,MAP,PUSHJ,PUSH,POP,POPJ,JSR,JSP,JSA,JRA>
MAKNAM<ADD,ADDI,ADDM,ADDB,SUB,SUBI,SUBM,SUBB,CAI,CAIL>
MAKNAM<CAIE,CAILE,CAIA,CAIGE,CAIN,CAIG,CAM,CAML,CAME,CAMLE>
MAKNAM<CAMA,CAMGE,CAMN,CAMG,JUMP,JUMPL,JUMPE,JUMPLE,JUMPA,JUMPGE>
MAKNAM<JUMPN,JUMPG,SKIP,SKIPL,SKIPE,SKIPLE,SKIPA,SKIPGE,SKIPN,SKIPG>
MAKNAM<AOJ,AOJL,AOJE,AOJLE,AOJA,AOJGE,AOJN,AOJG,AOS,AOSL>
MAKNAM<AOSE,AOSLE,AOSA,AOSGE,AOSN,AOSG,SOJ,SOJL,SOJE,SOJLE>
MAKNAM<SOJA,SOJGE,SOJN,SOJG,SOS,SOSL,SOSE,SOSLE,SOSA,SOSGE>
MAKNAM<SOSN,SOSG,SETZ,SETZI,SETZM,SETZB,AND,ANDI,ANDM,ANDB>
MAKNAM<ANDCA,ANDCAI,ANDCAM,ANDCAB,SETM,SETMI,SETMM,SETMB,ANDCM,ANDCMI>
MAKNAM<ANDCMM,ANDCMB,SETA,SETAI,SETAM,SETAB,XOR,XORI,XORM,XORB>
MAKNAM<IOR,IORI,IROM,IROB,ANDCB,ANDCBI,ANDCBM,ANDCBB,EQV,EQVI>
MAKNAM<EQVM,EQVB,SETCA,SETCAI,SETCAM,SETCAB,ORCA,ORCAI,ORCAM,ORCAB>
MAKNAM<SETCM,SETCMI,SETCMM,SETCMB,ORCM,ORCMI,ORCMM,ORCMB,ORCB,ORCBI>
MAKNAM<ORCBM,ORCBB,SETO,SETOI,SETOM,SETOB,HLL,HLLI,HLLM,HLLS>
MAKNAM<HRL,HRLI,HRLM,HRLS,HLLZ,HLLZI,HLLZM,HLLZS,HRLZ,HRLZI>
MAKNAM<HRLZM,HRLZS,HLLO,HLLOI,HLLOM,HLLOS,HRLO,HRLOI,HRLOM,HRLOS,HLLE>
MAKNAM<HLLEI,HLLEM,HLLES,HRLE,HRLEI,HRLEM,HRLES,HRR,HRRI,HRRM>
MAKNAM<HRRS,HLR,HLRI,HLRM,HLRS,HRRZ,HRRZI,HRRZM,HRRZS,HLRZ>
MAKNAM<HLRZI,HLRZM,HLRZS,HRRO,HRROI,HRROM,HRROS,HLRO,HLROI,HLROM>
MAKNAM<HLROS,HRRE,HRREI,HRREM,HRRES,HLRE,HLREI,HLREM,HLRES,TRN>
MAKNAM<TLN,TRNE,TLNE,TRNA,TLNA,TRNN,TLNN,TDN,TSN,TDNE>
MAKNAM<TSNE,TDNA,TSNA,TDNN,TSNN,TRZ,TLZ,TRZE,TLZE,TRZA>
MAKNAM<TLZA,TRZN,TLZN,TDZ,TSZ,TDZE,TSZE,TDZA,TSZA,TDZN>
MAKNAM<TSZN,TRC,TLC,TRCE,TLCE,TRCA,TLCA,TRCN,TLCN,TDC>
MAKNAM<TSC,TDCE,TSCE,TEDCA,TSCA,TDCN,TSCN,TRO,TLO,TROE>
MAKNAM<TLOE,TROA,TLOA,TRON,TLON,TDO,TSO,TDOE,TSOE,TDOA>
MAKNAM<TSOA,TDON,TSON>
MAKPRT<3>
EXINST: MAKNAM<←←←,JRST,PORTAL,JRSTF,←←←,HALT,←←←,←←←,←←←,←←←,←←←,JEN>
MAKNAM<←←←,←←←,←←←,←←←,←←←>
MAKNAM<JFCL,JFOV,JCRY1,←←←,JCRY0,←←←,JCRY,←←←,JOV>
MAKNAM<←←←,←←←,←←←,←←←,←←←,←←←,←←←>
MAKNAM<BLKI,DATAI,BLKO,DATAO,CONO,CONI,CONSZ,CONSO>
MAKNAM<←←←←←←,←←←←←←,←←←←←←,←←←←←←,←←←←←←,←←←←←←,←←←←←←>
MAKNAM<TTCALL,INCHRW,OUTCHR,INCHRS,OUTSTR,INCHWL,INCHSL,GETLCH,SETLCH>
MAKNAM<RESCAN,CLRBFI,CLRBFO,SKPINC,SKPINL,IONEOU,←←←,←←←>
CALTAB: MAKNAM<LIGHTS,RESET,DDTIN,SETDDT,DDTOUT,DEVCHR,DDTGT>
MAKNAM<GETCHR,DDTRL,WAIT,CORE,EXIT,UPTCLR,DATE,LOGIN>
MAKNAM<APRENB,LOGOUT,SWITCH,REASSI,TIMER,MSTIME,GETPPN>
MAKNAM<TRPSET,TRPJEN,RUNTIM,PJOB,SLEEP,SETPOV,PEEK,GETLIN>
MAKNAM<RUN,SETUWP,REMAP,GETSEG,GETTAB,SPY,SETNAM,TMPCOR>
MAKNAM<DSKCHR,SYSSTR,JOBSTR,STRUUO,SYSPHY,FRECHN,DEVTYP>
MAKNAM<DEVSTS,DEVPPN,SEEK,RTTRP,LOCK,JOBSTS,LOCATE,WHERE>
MAKNAM<DEVNAM,CTLJOB,GOBSTR,ACTIVA,DEACTI,HPQ,HIBER,WAKE>
MAKNAM<CHGPPN,SETUUO,DEVGEN,OTHUSR,CHKACC,DEVSIZ,DAEMON>
MAKNAM<JOBPEK,ATTACH,DAEFIN,FRCUUO,DEVLNM,PATH.,METER.>
MAKNAM<MTCHR.,JBSET.,POKE.,TRMNO.,TRMOP.,RESDV.,UNLOK.>
MAKNAM<DISK.,DVRST.,DVURS.>
IFN FINAL,<
LIST
>
SUBTTL MAIN LOOP
START:!
RENTER: RESET
MOVE P,[IOWD LEN,PDL]
SETZ F,
PUSHJ P,SETIO
NXTBLK: PUSHJ P,CRLF
PUSHJ P,GETWRD
HRRZ CNT,WRD
HLRZ T3,WRD
CAILE T3,CMDCNT*2
SETO T3,
JUMPL T3,NXTBK1
SETZ T4,
LSHC T3,-1
HLRZ T5,CMD(T3)
CAIE T4,
NXTBK1: HRRZ T5,CMD(T3)
MOVE T1,WRD
PUSHJ P,HAFOCT
PUSHJ P,TAB
PUSHJ P,TYPHDR
PUSHJ P,TWOOCT
PUSHJ P,(T5)
JRST NXTBLK
SUBTTL MAIN SUBROUTINES
NONIMP: MOVEI VARPTR,NONXWD
JRST LOOP
NONXWD: SOJL CNT,(N)
SOJL RCNT,(N)
PUSHJ P,GETWRD
PUSHJ P,RELCLC
PUSHJ P,CRLF
JRST NONXWD
CODE: SOJ CNT,
PUSHJ P,CRLF
MOVEI RCNT,RELCNT-1
PUSHJ P,CODLOC
JSP N,CODWRD
PUSHJ P,CRLF
CAIGE CNT,
POPJ P,
PUSHJ P,TWOOCT
JRST CODE+1
CODLOC: PUSHJ P,GETWRD
PUSHJ P,RELCLC
MOVEI T2,TYMES2
PUSHJ P,PUTSTR
MOVE T1,WRD
PUSHJ P,OCTOUT
JRST CRLF
CODWRD: SOJL CNT,(N)
SOJL RCNT,(N)
PUSHJ P,GETWRD
PUSHJ P,RELCLC
MOVE T5,WRD
PUSHJ P,SIXOUT
PUSHJ P,ASCOUT
PUSHJ P,INSOUT
PUSHJ P,CRLF
JRST CODWRD
HISEG: PUSHJ P,CRLF
PUSHJ P,GETWRD
MOVEI T2,TYMES6
HLRE T1,WRD
CAIE T1,0
MOVEI T2,TYMES7
PUSHJ P,PUTSTR
PUSHJ P,TAB
PUSHJ P,TAB
MOVEI T2,TYMES5
PUSHJ P,PUTSTR
HRRZ T1,WRD
PUSHJ P,OCTOUT
PUSHJ P,CRLF
SOJE CNT,CPOPJ
PUSHJ P,GETWRD
MOVEI T2,TYMES8
PUSHJ P,PUTSTR
HRRZ T1,WRD
PUSHJ P,OCTOUT
PUSHJ P,TAB
PUSHJ P,TAB
MOVEI T2,TYMES9
PUSHJ P,PUTSTR
HLRZ T1,WRD
PUSHJ P,OCTOUT
JRST CRLF
SYMBOL: MOVEI VARPTR,SYMWRD
JRST LOOP
SYMWRD: SUBI CNT,2
SUBI RCNT,2
JUMPL CNT,(N)
JUMPL RCNT,(N)
PUSHJ P,GETWRD
PUSHJ P,RELCLC
PUSHJ P,RADOUT
PUSHJ P,CRLF
PUSHJ P,GETWRD
PUSHJ P,RELCLC
MOVE T1,WRD
PUSHJ P,HAFOCT
PUSHJ P,CRLF
JRST SYMWRD
ENTR: MOVEI VARPTR,ENTWRD
JRST LOOP
ENTWRD: SOJL CNT,(N)
SOJL RCNT,(N)
PUSHJ P,GETWRD
MOVEI T2,TYMES4
PUSHJ P,PUTSTR
.GTSYM T1,
PUSHJ P,RAD50
PUSHJ P,CRLF
JRST ENTWRD
ENDBLK: PUSHJ P,CRLF
PUSHJ P,GETWRD
PUSHJ P,RELCLC
PUSHJ P,HAFOCT
SOJG CNT,ENDBLK
JRST CRLF
NAME: PUSHJ P,CRLF
PUSHJ P,GETWRD
MOVEI T2,TYMES1
PUSHJ P,PUTSTR
.GTSYM T1,
PUSHJ P,RAD50
PUSHJ P,CRLF
SOJN CNT,.+2
POPJ P,
PUSHJ P,GETWRD
.GTPRO T3,
SETZ T4,
LSHC T3,-1
HLR T2,PROTYP(T3)
CAIE T4,
HRR T2,PROTYP(T3)
PUSHJ P,PUTSTR
JRST CRLF
STARD: PUSHJ P,CRLF
PUSHJ P,GETWRD
MOVEI T2,TYMES3
PUSHJ P,PUTSTR
MOVE T1,WRD
PUSHJ P,OCTOUT
JRST CRLF
INTERN: JRST NONIMP
LINK: MOVEI VARPTR,LNKWRD
JRST LOOP
LNKWRD: SOJL CNT,(N)
SOJL RCNT,(N)
PUSHJ P,GETWRD
SETZ T3,
MOVEI T2,(CNT)
LSHC T2,-1
MOVEI T2,TYMS10
CAIN T3,0
MOVEI T2,TYMS11
PUSHJ P,PUTSTR
MOVEI T1,(WRD)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
JRST LNKWRD
LDREQ: MOVEI VARPTR,LDWRD
SOJ CNT,
JRST LOOP
LDWRD: JUMPL CNT,(N)
JUMPL RCNT,(N)
PUSHJ P,LDOUT
PUSHJ P,CRLF
SUBI CNT,3
SUBI RCNT,3
JRST LDWRD
LDOUT: PUSHJ P,GETWRD
MOVEI T2,FILMES
PUSHJ P,PUTSTR
MOVE T5,WRD
PUSHJ P,SIXOUT
PUSHJ P,CRLF
PUSHJ P,GETWRD
MOVEI T2,PPNMES
PUSHJ P,PUTSTR
PUSHJ P,PPNOUT
PUSHJ P,GETWRD
MOVEI T2,DEVMES
PUSHJ P,PUTSTR
MOVE T5,WRD
PUSHJ P,SIXOUT
JRST CRLF
COMMON: JRST NONIMP
SPARSE: JRST NONIMP
LOOP: PUSHJ P,CRLF
MOVEI RCNT,RELCNT
JSP N,@VARPTR
CAIGE CNT,
POPJ P,
PUSHJ P,TWOOCT
AOJ CNT,
JRST LOOP
SUBTTL INPUT-OUTPUT ROUTINES
SETIO: OUTSTR [BYTE(7) 15,12,"*"]
PUSHJ P,GETFIL
TRZN F,CHRTYP
JRST SETIO
TRNN F,AROW.F
JRST SETIN
PUSHJ P,OUTFIL
PUSHJ P,GETFIL
PUSHJ P,INFILE
POPJ P,
SETIN: PUSHJ P,INFILE
SETZB FILE.,EXT.
MOVSI DEV.,'TTY'
SETZ PPN.,
PUSHJ P,OUTFIL
POPJ P,
GETFIL: SETZB DEV.,PPN.
SETZB FILE.,EXT.
MOVE T6,[POINT 6,FILE.]
MOVEI T5,6
GETFL2: PUSHJ P,GETCHR
MOVEI T2,BRKCNT
MOVE T3,BRKTAB(T2)
CAIN T1,(T3)
JRST FOUND
SOJGE T2,.-3
SOJL T5,GETFL2
SUBI T1,40
IDPB T1,T6
TRO F,CHRTYP
JRST GETFL2
FOUND: MOVSS T3
JRST (T3)
DEVICE: MOVE T1,FILE.
MOVEM T1,DEV.
JRST GETFIL+1
EXT: MOVEI T5,3
MOVE T6,[POINT 6,EXT.]
JRST GETFL2
PPN: PUSHJ P,GETOCT
HRLM T2,PPN.
PUSHJ P,GETOCT
HRRM T2,PPN.
TRZE F,DONE.F
JRST FOUND
SETO T5,
JRST GETFL2
ARROW: TROE F,AROW.F
JRST TWOARW
JUMPN DEV.,.+2
MOVSI DEV.,'DSK'
POPJ P,
TWOARW: OUTSTR [ASCIZ/?TWO BACK ARROWS ILLEGAL
/]
EATMUP: PUSHJ P,GETCHR
JUMPN T1,EATMUP
JRST RENTER
GETOCT: SETZ T2,
PUSHJ P,GETCHR
CAIN T1,40
JRST GETOCT+1
MOVEI T4,LINCNT
MOVE T3,LINTAB(T4)
CAIN T1,(T3)
JRST LINDON
SOJGE T4,.-3
CAIE T1,"]"
CAIN T1,","
POPJ P,
CAIL T1,"0"
CAILE T1,"9"
JRST BADCHR
LSH T2,3
ADDI T2,-60(T1)
JRST GETOCT+1
LINDON: TROA F,DONE.F
CPOPJ1: AOS (P)
CPOPJ: POPJ P,
GETCHR: INCHWL T1
CAIN T1,32
EXIT
CAIL T1,"A"
CAILE T1,"Z"
JRST .+2
POPJ P,
CAIL T1,"0"
CAILE T1,"9"
JRST .+2
POPJ P,
CAIE T1,33
CAIN T1,175
JRST GETLF+1
CAIN T1,15
JRST GETLF
CAIN T1,12
JRST GETLF+1
PUSH P,T2
PUSH P,T3
MOVEI T2,SPCCNT
MOVE T3,SPCCHR(T2)
CAIN T1,(T3)
JRST CHROK
SOJGE T2,.-3
BADCHR: OUTSTR [ASCIZ/?ILLEGAL CHARACTER "/]
OUTCHR T1
OUTSTR [ASCIZ/"
/]
JRST EATMUP
CHROK: POP P,T3
POP P,T2
POPJ P,
GETLF: INCHWL T1
SETZ T1,
POPJ P,
OUTFIL: MOVEM DEV.,OPBLKO+1
OPEN ODEV,OPBLKO
JRST NOTAV2
MOVEI T1,ODEV
DEVCHR T1,
TLNN T1,DV.DIR
JRST OUTIT
SETZ DEV.,
HRRI EXT.,
JUMPN EXT.,.+2
MOVSI EXT.,'LST'
ENTER ODEV,FILE.
JRST OUTFER
JRST OUTIT
OUTFER: OUTSTR [ASCIZ/?ENTER/]
PUSHJ P,GETCHR
JUMPN T1,.-1
FILERR: OUTSTR [ASCIZ/ FAILURE /]
HRRZ T1,EXT.
SETZ T2,
LSHC T1,-1
ROT T2,1
MOVE T1,ERRTAB(T1)
JUMPN T2,.+2
MOVSS T1
OUTSTR (T1)
JRST RENTER
INFILE: MOVEM DEV.,OPBLKI+1
OPEN IDEV,OPBLKI
JRST NOTAVL
MOVEI T1,IDEV
DEVCHR T1,
TLNN T1,DV.DIR
JRST GETIN
PUSH P,PPN.
LOOKUP IDEV,FILE.
JRST .+3
POP P,PPN.
JRST GETIN
POP P,PPN.
MOVSI EXT.,'REL'
LOOKUP IDEV,FILE.
JRST .+2
JRST GETIN
TDZ EXT.,EXT.
INFERR: OUTSTR [ASCIZ/?LOOKUP/]
JRST FILERR
OUTIT: OUT ODEV,
POPJ P,
OUTSTR [ASCIZ/?OUTPUT FAILURE /]
GETSTS ODEV,T1
OUTERR: PUSHJ P,TTYOCT
OUTSTR [BYTE(7)15,12]
RELEAS ODEV,
JRST RENTER
PUTOUT: PUSHJ P,OUTIT
PUTCHR: SOSGE OBUF+2
JRST PUTOUT
IDPB T1,OBUF+1
POPJ P,
PUTSTR: HRLI T2,440700
ILDB T1,T2
JUMPE T1,CPOPJ
PUSHJ P,PUTCHR
JRST PUTSTR+1
GETIN: IN IDEV,
POPJ P,
STATZ IDEV,EOF
JRST FINISH
OUTSTR [ASCIZ/?INPUT FAILURE /]
GETSTS IDEV,T1
JRST OUTERR
GETIT: PUSHJ P,GETIN
GETWRD: SOSGE IBUF+2
JRST GETIT
ILDB WRD,IBUF+1
JRST FULOCT
TTYOCT: SETZ T2,
LSHC T1,-3
ROT T2,3
HRLM T2,(P)
JUMPE T1,.+2
PUSHJ P,TTYOCT
HLRZ T1,(P)
ADDI T1,60
OUTCHR T1
POPJ P,
NOTAV2: TRNN F,AROW.F
JRST NOTAVL
PUSHJ P,GETCHR
JUMPN T1,.-1
NOTAVL: OUTSTR [ASCIZ/?DEVICE /]
MOVE T1,DEV.
PUSHJ P,TTYSIX
OUTSTR [ASCIZ/ IS NOT AVAILABLE
/]
JRST RENTER
TTYSIX: MOVEM T1,T2
SETZ T1,
JUMPE T2,CPOPJ
LSHC T1,6
ADDI T1,40
OUTCHR T1
JRST TTYSIX+1
FINISH: RELEAS IDEV,
RELEAS ODEV,
JRST RENTER
SUBTTL GENERAL UTILITY SUBROUTINES
TAB: MOVEI T1,11
JRST PUTCHR
SPACE: MOVEI T1," "
JRST PUTCHR
INDOUT: MOVEI T1,"@"
JRST PUTCHR
COMMA: MOVEI T1,","
JRST PUTCHR
COMM2: MOVEI T1,","
PUSHJ P,PUTCHR
JRST PUTCHR
CRLF: MOVEI T1,15
PUSHJ P,PUTCHR
MOVEI T1,12
JRST PUTCHR
OCTOUT: SETZ T2,
LSHC T1,-3
ROT T2,3
HRLM T2,(P)
JUMPE T1,OCT1
PUSHJ P,OCTOUT
OCT1: HLRZ T1,(P)
ADDI T1,60
JRST PUTCHR
SIXOUT: MOVE T3,[POINT 6,T5]
MOVEI T2,6
ILDB T1,T3
ADDI T1,40
PUSHJ P,PUTCHR
SOJG T2,SIXOUT+2
JRST TAB
ASCOUT: MOVEI T3,4
MOVE T4,[POINT 7,T5]
ILDB T1,T4
CAIGE T1,40
MOVEI T1,40
PUSHJ P,PUTCHR
SOJGE T3,.-4
JRST TAB
FULOCT: HLRZ T4,WRD
PUSHJ P,FULL
HRRZ T4,WRD
PUSHJ P,FULL
PUSHJ P,TAB
JRST TAB
FULL: JUMPN T4,.+3
MOVEI T2,5
JRST FUL1
MOVE T1,T4
JFFO T1,.+1
SUBI T2,22
CAIGE T2,3
JRST FUL2
IDIVI T2,3
FUL1: MOVEI T1,"0"
PUSHJ P,PUTCHR
SOJG T2,.-1
MOVE T1,T4
FUL2: JRST OCTOUT
HAFOCT: HLRZ T1,WRD
PUSHJ P,OCTOUT
PUSHJ P,COMM2
HRRZ T1,WRD
JRST OCTOUT
TWOOCT: PUSHJ P,CRLF
PUSHJ P,GETWRD
MOVE RELWRD,WRD
MOVE T3,WRD
MOVEI T4,20
TWOCT1: SETZ T2,
LSHC T2,2
MOVE T1,T2
PUSHJ P,OCTOUT
PUSHJ P,COMMA
SOJGE T4,TWOCT1
SETZ T2,
LSHC T2,2
MOVE T1,T2
PUSHJ P,OCTOUT
JRST CRLF
PPNOUT: MOVEI T1,"["
PUSHJ P,PUTCHR
HLRZ T1,WRD
PUSHJ P,OCTOUT
PUSHJ P,COMMA
HRRZ T1,WRD
PUSHJ P,OCTOUT
MOVEI T1,"]"
PUSHJ P,PUTCHR
JRST CRLF
TYPE: MOVEI T2,TYMES
PUSHJ P,PUTSTR
HLRZ T1,WRD
JRST OCTOUT
INXOUT: MOVEI T1,"("
PUSHJ P,PUTCHR
MOVE T1,T2
PUSHJ P,OCTOUT
MOVEI T1,")"
JRST PUTCHR
RADOUT: LDB T1,[POINT 4,WRD,3]
LSH T1,2
PUSHJ P,OCTOUT
PUSHJ P,SPACE
.GTSYM T1,
RAD50: IDIVI T1,50
HRLM T2,(P)
JUMPE T1,.+2
PUSHJ P,RAD50
HLRZ T1,(P)
CAIN T1,
POPJ P,
CAILE T1,44
JRST SPCIAL
ADDI T1,57
CAIL T1,72
ADDI T1,7
JRST PUTCHR
SPCIAL: CAIN T1,45
MOVEI T1,"."
CAIN T1,46
MOVEI T1,"$"
CAIN T1,47
MOVEI T1,"%"
JRST PUTCHR
RELCLC: SETZ T5,
LSHC T5,2
LSH T5,1
MOVEI T2,RELMES(T5)
PUSHJ P,PUTSTR
PUSHJ P,TAB
JRST TAB
TYPHDR: PUSHJ P,TAB
PUSHJ P,TYPE
JUMPL T3,TYHDR
HLR T2,CMDMES(T3)
CAIE T4,
TYHDR: HRR T2,CMDMES(T3)
JRST PUTSTR
INSOUT: PUSHJ P,TAB
TLZ F,AC.F
.GTINS T1,
CAILE T1,40
CAILE T1,700
POPJ P,
TLNE WRD,IND.F!INX.F
JRST INS1
CAIN T1,47
JRST CALLIS
INS1: MOVE T5,INST-40(T1)
PUSHJ P,INSCHK
PUSHJ P,INS2
PUSHJ P,SIXOUT
TLNN F,AC.F
PUSHJ P,INSAC
PUSHJ P,INSEFF
POPJ P,
CALLIS: HRRE T2,WRD
AOJ T2,
JUMPL T2,INS1
CAILE T2,124
JRST INS1
MOVE T5,CALTAB(T2)
PUSHJ P,SIXOUT
PUSHJ P,INSAC
JRST TAB
INSAC: .GTACM T1,
CAIN T1,
POPJ P,
PUSHJ P,OCTOUT
JRST COMMA
INSEFF: TLNE WRD,IND.F
PUSHJ P,INDOUT
HRRZ T1,WRD
PUSHJ P,OCTOUT
.GTINX T1,
MOVE T2,T1
CAIE T1,
PUSHJ P,INXOUT
JRST TAB
INSCHK: AOS (P)
SETCAM T5,T2
TLNN T2,PRT.F
SOS (P)
POPJ P,
INS2: TLO F,AC.F
HRRZ T1,T5
JUMPE T1,INSNO
SUBI T1,1
LSH T1,4
.GTACM T2,
ADD T2,T1
MOVE T5,EXINST+1(T2)
PUSHJ P,INSCHK
CAIA
POPJ P,
INS3: HRLS T5
PUSHJ P,INSCHK
JRST INSNO
CAIN T1,60
SOJ T1,
MOVE T5,EXINST+1(T1)
TLZ F,AC.F
POPJ P,
INSNO: POP P,T1
POPJ P,
END START